home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Crack It!
/
Crack It!.iso
/
CONTENT
/
DISKEDIT
/
ABSDISK.ASM
next >
Wrap
Assembly Source File
|
1996-09-09
|
3KB
|
119 lines
;***
;
;ABSDISK.ASM - assembly routines for absolute disk sector access
;(C)Copyright Gerard Paul Java 1996
.MODEL TPASCAL
.DATA
CONTROL_PACKET LABEL WORD
SECTOR_NUM_LOW DW ?
SECTOR_NUM_HI DW ?
NUM_SECTORS DW ?
BUF_OFFSET DW ?
BUF_SEGMENT DW ?
.CODE
PUBLIC AbsRead
PUBLIC AbsWrite
PUBLIC AugAbsRead
PUBLIC AugAbsWrite
AbsRead PROC FAR rDrive: BYTE,rStartSec: WORD,rNumSec: WORD,rBufAddr: DWORD,rErrAddr: DWORD
PUSH DS
MOV AL,rDrive
MOV DX,rStartSec
MOV CX,rNumSec
LDS BX,rBufAddr
INT 25H
LES DI,rErrAddr
JNC NO_ERROR
CMP AX,0207H
JE NO_CAN_DO
MOV BYTE PTR ES:[DI],AL
MOV BYTE PTR ES:[DI+1],1
JMP OVER
NO_CAN_DO: MOV WORD PTR ES:[DI],0FFFFH
JMP OVER
NO_ERROR: MOV WORD PTR ES:[DI],0
OVER: POPF
POP DS
RET
AbsRead ENDP
AbsWrite PROC FAR wDrive: BYTE,wStartSec: WORD,wNumSec: WORD,wBufAddr: DWORD,wErrAddr: DWORD
PUSH DS
MOV AL,wDrive
MOV DX,wStartSec
MOV CX,wNumSec
LDS BX,wBufAddr
INT 26H
LES DI,wErrAddr
JNC wNO_ERROR
MOV BYTE PTR ES:[DI],AL
MOV BYTE PTR ES:[DI+1],1
JMP wOVER
wNO_ERROR: MOV WORD PTR ES:[DI],0
wOVER: POPF
POP DS
RET
AbsWrite ENDP
AugAbsRead PROC FAR arDrive: BYTE,arStartSec: DWORD,arNumSec: WORD,arBufAddr: DWORD,arResult: DWORD
PUSH DS
MOV AL,arDrive
MOV CX,0FFFFH
MOV BX,OFFSET CONTROL_PACKET
LES SI,arStartSec
MOV SECTOR_NUM_LOW,SI
MOV SECTOR_NUM_HI,ES
MOV DX,arNumSec
MOV NUM_SECTORS,DX
LES SI,arBufAddr
MOV BUF_OFFSET,SI
MOV BUF_SEGMENT,ES
INT 25H
LES DI,arResult
JNC arNO_ERROR
MOV BYTE PTR ES:[DI],AL
MOV BYTE PTR ES:[DI+1],1
JMP arOVER
arNO_ERROR: MOV WORD PTR ES:[DI],0
arOVER: POPF
POP DS
RET
AugAbsRead ENDP
AugAbsWrite PROC FAR awDrive: BYTE,awStartSec: DWORD,awNumSec: WORD,awBufAddr: DWORD,awResult: DWORD
PUSH DS
MOV AL,awDrive
MOV BX,OFFSET CONTROL_PACKET
MOV CX,0FFFFH
LES SI,awStartSec
MOV SECTOR_NUM_LOW,SI
MOV SECTOR_NUM_HI,ES
MOV DX,awNumSec
MOV NUM_SECTORS,DX
LES SI,awBufAddr
MOV BUF_OFFSET,SI
MOV BUF_SEGMENT,ES
INT 26H
LES DI,awResult
JNC awNO_ERROR
MOV BYTE PTR ES:[DI],AL
MOV BYTE PTR ES:[DI+1],1
JMP awOVER
awNO_ERROR: MOV WORD PTR ES:[DI],0
awOVER: POPF
POP DS
RET
AugAbsWrite ENDP
END